home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Micro on the Apple Volume 2 (1981)(Micro Ink).zip
/
Micro on the Apple Volume 2 (1981)(Micro Ink).do
/
GALACTI-CUBE.int
< prev
next >
Wrap
Text File
|
1996-12-24
|
7KB
|
226 lines
10 REM ************************
12 REM * *
14 REM * GALACTI-CUBE *
16 REM * R.J. BISHOP *
18 REM * *
20 REM * COPYRIGHT (C) 1981 *
22 REM * MICRO INK, INC. *
24 REM * CHELMSFORD, MA 01824 *
26 REM * ALL RIGHTS RESERVED *
27 REM * *
28 REM ************************
29 REM
30 DIM BOX(27),QUE(27),NODE(6),BIT(6),A$(5)
40 GOSUB 9000
50 GOSUB 1000
60 VTAB 23:TAB 5:PRINT "(HIT ANY KEY TO START THE GAME) <CTRL-G>";
70 GOSUB 4000:GOSUB 5000
90 LOC=14:OLD=LOC:FUEL=40
100 REM MAIN LOOP
110 GOSUB 2000
150 CALL -936:PRINT :PRINT :PRINT " COMMAND:"
160 PRINT :TAB 7:GOSUB 4000:CALL -936
165 IF A$="" THEN 150
170 IF A$(1,1)#"F" THEN 250
180 CALL -936:PRINT :PRINT " YOU HAVE ";FUEL
190 PRINT :PRINT " FUEL UNITS"
210 FOR K=1 TO 1000:NEXT K:GOTO 150
250 Z=(OLD-1)/9+1
260 Y=(((OLD-1)/3) MOD 3)+1
270 X=((OLD-1) MOD 3)+1
300 IF A$="E" THEN X=X+1
310 IF A$="W" THEN X=X-1
320 IF A$="N" THEN Y=Y+1
330 IF A$="S" THEN Y=Y-1
340 IF A$="U" THEN Z=Z+1
350 IF A$="D" THEN Z=Z-1
360 LOC=X+3*(Y-1)+9*(Z-1)
370 IF LOC<>OLD THEN 390
380 PRINT "<CTRL-G>":GOTO 150
390 IF X<1 OR X>3 OR Y<1 OR Y>3 THEN 700
400 IF BOX(OLD)>=32 AND Z=0 THEN 800
410 VAL=BOX(OLD):IF VAL>=32 THEN VAL=VAL-32
420 IF VAL>=16 AND Z=4 THEN 800
430 IF Z<1 OR Z>3 THEN 700
450 BITS=BOX(OLD)
460 WAY=BITS-2*(BITS/2):BITS=BITS/2
470 IF WAY=0 AND A$="E" THEN 700
480 WAY=BITS-2*(BITS/2):BITS=BITS/2
490 IF WAY=0 AND A$="W" THEN 700
500 WAY=BITS-2*(BITS/2):BITS=BITS/2
505 IF WAY=0 AND A$="N" THEN 700
510 WAY=BITS-2*(BITS/2):BITS=BITS/2
515 IF WAY=0 AND A$="S" THEN 700
520 WAY=BITS-2*(BITS/2):BITS=BITS/2
525 IF WAY=0 AND A$="U" THEN 700
530 WAY=BITS-2*(BITS/2):BITS=BITS/2
535 IF WAY=0 AND A$="D" THEN 700
540 WAY=BITS-2*(BITS/2):BITS=BITS/2
550 FUEL=FUEL-1:IF FUEL>0 THEN 100
560 CALL -936:PRINT " <CTRL-G>Y<CTRL-G>O<CTRL-G>U<CTRL-G> <CTRL-G>A<CTRL-G>R<CTRL-G>E<CTRL-G>"
565 PRINT
570 PRINT " <CTRL-G>O<CTRL-G>U<CTRL-G>T<CTRL-G> <CTRL-G>O<CTRL-G>F<CTRL-G>"
575 PRINT
580 PRINT " <CTRL-G>F<CTRL-G>U<CTRL-G>E<CTRL-G>L<CTRL-G>!<CTRL-G>";
590 GOTO 830
700 CALL -936:PRINT "<CTRL-G> THAT DIREC-"
710 PRINT :PRINT " TION HAS AN"
720 PRINT :PRINT " OBSTRUCTION<CTRL-G>";
730 FOR K=1 TO 1000:NEXT K:GOTO 150
800 CALL -936:PRINT "<CTRL-G>Y<CTRL-G>O<CTRL-G>U<CTRL-G> <CTRL-G>F<CTRL-G>O<CTRL-G>U<CTRL-G>N<CTRL-G>D<CTRL-G> <CTRL-G>T<CTRL-G>H<CTRL-G>E<CTRL-G>"
810 PRINT :PRINT " <CTRL-G>E<CTRL-G>X<CTRL-G>I<CTRL-G>T<CTRL-G> <CTRL-G>I<CTRL-G>N<CTRL-G> <CTRL-G>O<CTRL-G>N<CTRL-G>L<CTRL-G>Y<CTRL-G>"
820 PRINT :PRINT " ";41-FUEL;"<CTRL-G> <CTRL-G>M<CTRL-G>O<CTRL-G>V<CTRL-G>E<CTRL-G>S<CTRL-G>!<CTRL-G>";
830 GOSUB 2700
840 FOR K=1 TO 2500:NEXT K
850 CALL -936:END
900 END
1000 REM GENERATE THE MAZE
1010 FOR K=1 TO 27
1020 BOX(K)=128
1030 NEXT K
1040 BOX(14)=0
1050 QUE(1)=14:QBIG=1
1060 XQBIG=1
1100 FOR K=1 TO QBIG
1110 IND=QUE(K)
1140 KNT=0:ROAD=1:DEL=1
1150 FOR J=0 TO 2
1160 SET=3*DEL
1170 FOR L=0 TO 1
1180 NDX=IND+DEL
1190 IF NDX<1 THEN 1400
1200 IF (NDX-1)/SET<>(IND-1)/SET THEN 1400
1250 IF BOX(NDX)<128 THEN 1400
1300 KNT=KNT+1:NODE(KNT)=NDX:BIT(KNT)=ROAD
1400 DEL=-DEL:ROAD=ROAD+ROAD
1450 NEXT L
1460 DEL=SET
1470 NEXT J
1500 IF KNT=0 THEN 1600
1510 NDX= RND (KNT)+1:XQBIG=XQBIG+1
1520 QUE(XQBIG)=NODE(NDX)
1530 BOX(IND)=BOX(IND)+BIT(NDX)
1540 TIB=2*BIT(NDX)
1550 IF TIB=4 OR TIB=16 OR TIB=64 THEN TIB=TIB/4
1590 BOX(NODE(NDX))=BOX(NODE(NDX))+TIB-128
1600 NEXT K
1610 QBIG=XQBIG:IF QBIG<27 THEN 1100
1700 HOLE=2* RND (2)+6* RND (2)+18* RND (2)+1
1710 OPEN=16:IF HOLE<14 THEN OPEN=32
1720 BOX(HOLE)=BOX(HOLE)+OPEN
1800 RETURN
2000 REM UPDATE THE DISPLAY
2005 GOSUB 2700
2010 Z=(OLD-1)/9+1
2020 Y=(((OLD-1)/3) MOD 3)+1
2030 X=((OLD-1) MOD 3)+1
2040 VTAB 13-Y-Y
2050 TAB 8*Z+X+X-7
2060 PRINT "-"
2110 Z=(LOC-1)/9+1
2120 Y=(((LOC-1)/3) MOD 3)+1
2130 X=((LOC-1) MOD 3)+1
2140 VTAB 13-Y-Y
2150 TAB 8*Z+X+X-7
2170 POKE PEEK (36)+ PEEK (40)+256* PEEK (41),109
2200 BITS=BOX(LOC)
2210 VT=20:T=34:A$="EAST":GOSUB 2500
2220 VT=22:T=34:A$="WEST":GOSUB 2500
2230 VT=20:T=28:A$="NORTH":GOSUB 2500
2240 VT=22:T=28:A$="SOUTH":GOSUB 2500
2250 VT=20:T=24:A$="UP":GOSUB 2500
2260 VT=22:T=23:A$="DOWN":GOSUB 2500
2300 GOSUB 2600
2400 OLD=LOC
2450 RETURN
2500 WAY=BITS-2*(BITS/2):BITS=BITS/2
2510 MODE=127:IF WAY THEN MODE=255
2520 POKE 50,MODE:VTAB VT:TAB T:PRINT A$: POKE 50,255
2550 RETURN
2600 VTAB 19:TAB 5
2610 POKE 32,2
2630 POKE 33,14
2660 POKE 34,17
2680 POKE 35,22
2690 RETURN
2700 POKE 32,0
2710 POKE 33,40
2720 POKE 34,0
2730 POKE 35,24
2750 RETURN
4000 REM 'GET' FROM THE KEYBOARD
4010 POKE -16368,0
4020 CHAR= PEEK (-16384):IF CHAR<128 THEN 4020
4030 POKE -16368,0:A$="?"
4080 IF CHAR=141 THEN A$=""
4090 IF CHAR=196 THEN A$="D"
4100 IF CHAR=197 THEN A$="E"
4110 IF CHAR=198 THEN A$="F"
4120 IF CHAR=206 THEN A$="N"
4130 IF CHAR=211 THEN A$="S"
4140 IF CHAR=213 THEN A$="U"
4150 IF CHAR=215 THEN A$="W"
4200 RETURN
5000 REM DRAW DISPLAY
5010 CALL -936:PRINT " YOUR LOCATION COMPASS"
5020 PRINT :PRINT " (BOT) (MID) (TOP) REFERENCE"
5030 PRINT :TAB 34:PRINT "N"
5040 PRINT :TAB 34:PRINT "!"
5050 TAB 34:PRINT "!"
5060 TAB 29:PRINT "W <--*--> E"
5070 TAB 34:PRINT "!"
5080 TAB 34:PRINT "!"
5090 PRINT :TAB 34:PRINT "S"
5100 VTAB 6
5110 FOR K=1 TO 3
5120 PRINT :PRINT " - - - - - - - - -"
5130 NEXT K
5140 VTAB 16:TAB 21:PRINT "OBSTRUCTION SENSORS"
5200 POKE 50,63
5210 VTAB 5:PRINT " "
5220 FOR K=1 TO 7
5230 PRINT " ";:TAB 9:PRINT " ";:TAB 17:PRINT " ";:TAB 25:PRINT " "
5240 NEXT K
5250 PRINT " "
5300 VTAB 18:TAB 21:PRINT " "
5310 FOR K=1 TO 5
5320 TAB 21:PRINT " ";:TAB 39:PRINT " "
5330 NEXT K
5340 TAB 21:PRINT " ";
5400 VTAB 15:PRINT
5410 PRINT " "
5420 FOR K=1 TO 7
5430 PRINT " ";:TAB 18:PRINT " "
5440 NEXT K
5450 PRINT " ";
5500 POKE 50,255
5900 RETURN
9000 CALL -936:VTAB 10
9010 TAB 10:PRINT "*** GALACTI-CUBE ***"
9020 PRINT :TAB 19:PRINT "BY"
9030 PRINT :TAB 14:PRINT "ROBERT BISHOP"
9040 FOR K=1 TO 1500:NEXT K
9050 CALL -936
9110 PRINT " YOU ARE THE CAPTAIN OF A STAR-SHIP"
9120 PRINT "EXPLORING THE OUTER LIMITS OF OUR UNI-"
9130 PRINT "VERSE. YOU HAVE DISCOVERED A GIGANTIC"
9140 PRINT "CUBE FLOATING IN SPACE. THROUGH THE"
9150 PRINT "ONLY OPENING YOU HAVE FLOWN YOUR SHIP"
9160 PRINT "INSIDE, BUT NOW YOU CAN'T FIND YOUR WAY"
9170 PRINT "BACK OUT!"
9190 PRINT " FROM YOUR EXPLORATIONS YOU HAVE"
9200 PRINT "LEARNED THAT THE CUBE IS DIVIDED INTO"
9210 PRINT "AN ARRAY OF 3X3X3 CUBICAL COMPARTMENTS"
9220 PRINT "AND YOU ARE CURRENTLY IN THE CENTER-"
9230 PRINT "MOST ONE."
9250 PRINT " YOUR SHIP IS EQUIPPED WITH A DIS-"
9260 PRINT "PLAY INDICATING YOUR LOCATION. THE"
9270 PRINT "OBSTRUCTION SENSORS INDICATE WHICH DI-"
9280 PRINT "RECTIONS (FLASHING) ARE BLOCKED. YOU"
9310 PRINT "MOVE YOUR SHIP BY HITTING THE FIRST"
9320 PRINT "LETTER OF THE DIRECTION YOU WANT TO GO."
9330 PRINT "YOUR FUEL SUPPLY (WHICH IS DISPLAYED BY"
9340 PRINT "HITTING THE LETTER, F) WILL ONLY LET"
9350 PRINT "YOU MAKE UP TO 40 MOVES. GOOD LUCK!"
9999 RETURN